<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="root"></div>
<script src="../../../javascript/react.js"></script>
<script src="../../../javascript/react-dom.js"></script>
<script src="../../../javascript/babel.js"></script>
<script type="text/babel">
    /*
    * 事件 handleClick 会被自动传入一个 event 对象，这个对象和普通的浏览器 event 对象所包含的方法和属性都基本一致
    *不同的是 React中的 event 对象并不是浏览器提供的，而是它自己内部所构建的。它同样具有event.stopPropagation、event.preventDefault这种常用的方法
    * */
    class App extends React.Component {
        constructor(props) {
            super(props)
            this.clickHandle4 = this.clickHandle4.bind(this)
        }

        render() {
            return (
                <div className="app">
                    {/*普通绑定事件处理函数*/}
                    <button onClick={this.clickHandle1}>点击</button>
                    {/*箭头函数+赋值语句绑定事件处理函数*/}
                    <button onClick={this.clickHandle2}>点击</button>
                    {/*bind函数绑定事件处理函数*/}
                    <button onClick={this.clickHandle3.bind(this)}>点击</button>
                    {/*bind函数绑定事件处理函数*/}
                    <button onClick={this.clickHandle4}>点击</button>
                    {/*箭头函数绑定事件处理函数*/}
                    <button onClick={(event) => this.clickHandle5(event)}>点击</button>

                </div>
            )
        }

        clickHandle1(event) {
            // 接收事件对象
            event.target.style.color = "red"
        }

        clickHandle2 = (event) => {
            // 接收事件对象
            event.target.style.color = "red"
        }

        clickHandle3(event) {
            // 接收事件对象
            event.target.style.color = "red"
        }

        clickHandle4(event) {
            // 接收事件对象
            event.target.style.color = "red"
        }

        clickHandle5(event) {
            // 接收事件对象
            event.target.style.color = "red"
        }
    }

    const root = ReactDOM.createRoot(document.querySelector("#root"))
    root.render(<App/>)
</script>
</body>
</html>
